/*
 *  SystemParam.h
 *  Milovo03epsilon03
 *
 *  Created by luca on 04/08/06.
 *  Copyright 2006 __MyCompanyName__. All rights reserved.
 *
 */

#ifndef SYSTEMPARAM_H
#define SYSTEMPARAM_H

#include "Milovo_HCommons.h"

class SystemParams
{
	Mil_Int NumGeneticGenerations;
	Mil_Int MaxLifeRecipes;
	Mil_Int MaxLifeArtifacts;
	Mil_Int NumGeneticRecipesForInitPopulation;
	Mil_Int SeedRandomValue;
	Mil_Int ActivityDeadLevel;
	Mil_Int QuantityCeilStartRange;
	Mil_Int QuantityCeilEndRange;
	Mil_Int MinNameArtifactAllowed;
	Mil_Int MaxNameArtifactAllowed;
	Mil_Int SaveDatabaseFreq;
	Mil_Int UseGenerativePotential;
	Mil_Double LambdaActivity;
	Mil_Double CostRecipes;
	Mil_Double ActivitySlowKinetic;
	Mil_Int InitPopulationType;
	Mil_Double ProbGAMutation;
	Mil_Double ProbGAInitPopulation;
	Mil_Double XsigmaMin;
	Mil_Double XsigmaMax;
	Mil_Double YsigmaMin;
	Mil_Double YsigmaMax;
	Mil_Double EpsilonIfVoteZero;
	Mil_Double AlphaVote;
	Mil_Double BetaHeterogeneity;
	Mil_Double GammaAlignedDirectedness;
	Mil_Int AgentSelectionMode;
	Mil_Int ScaffoldingMaxLevel;
	Mil_Int UseEvents;
	Mil_Double BornNewAgents;
	Mil_Double GrowCoefficient;
	
public:
	SystemParams();
	~SystemParams();
	
	Mil_Int GetNumGeneticGenerations() {return NumGeneticGenerations;}
	Mil_Int GetMaxLifeRecipes() {return MaxLifeRecipes;}
	Mil_Int GetMaxLifeArtifacts() {return MaxLifeArtifacts;}
	Mil_Int GetNumGeneticRecipesForInitPopulation() {return NumGeneticRecipesForInitPopulation;}
	Mil_Int GetSeedRandomValue() {return SeedRandomValue;}
	Mil_Int GetActivityDeadLevel() {return ActivityDeadLevel;}
	Mil_Int GetQuantityCeilStartRange() {return QuantityCeilStartRange;}
	Mil_Int GetQuantityCeilEndRange() {return QuantityCeilEndRange;}
	Mil_Int GetMinNameArtifactAllowed() {return MinNameArtifactAllowed;}
	Mil_Int GetMaxNameArtifactAllowed() {return MaxNameArtifactAllowed;}
	Mil_Int GetSaveDatabaseFreq() {return SaveDatabaseFreq;}
	Mil_Int GetUseGenerativePotential() {return UseGenerativePotential;}
	Mil_Double GetLambdaActivity() {return LambdaActivity;}
	Mil_Double GetCostRecipes() {return CostRecipes;}
	Mil_Double GetActivitySlowKinetic() {return ActivitySlowKinetic;}
	Mil_Double GetProbGAMutation() {return ProbGAMutation;}
	Mil_Double GetProbGAInitPopulation() {return ProbGAInitPopulation;}
	Mil_Double GetXsigmaMin() {return XsigmaMin;}
	Mil_Double GetXsigmaMax() {return XsigmaMax;}
	Mil_Double GetYsigmaMin() {return YsigmaMin;}
	Mil_Double GetYsigmaMax() {return YsigmaMax;}
	Mil_Double GetEpsilonIfVoteZero() {return EpsilonIfVoteZero;}
	Mil_Double GetAlphaVote() {return AlphaVote;}
	Mil_Double GetBetaHeterogeneity() {return BetaHeterogeneity;}
	Mil_Double GetGammaAlignedDirectedness() {return GammaAlignedDirectedness;}
	Mil_Int GetAgentSelectionMode() {return AgentSelectionMode;}
	Mil_Int GetScaffoldingMaxLevel() {return ScaffoldingMaxLevel;}
	Mil_Int GetUseEvents() {return UseEvents;}
	Mil_Double GetBornNewAgents() {return BornNewAgents;}
	Mil_Double GetGrowCoefficient() {return GrowCoefficient;}
	Mil_Int GetInitPopulationType() {return InitPopulationType;}
	
	void SetBornNewAgents(Mil_Double tmpNewValue) {BornNewAgents = tmpNewValue;}
	void LoadSystemParam(string strPath);
	void PrintSystemParam();
};

#endif

